<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue.js - 基础</title>
</head>
<body>
    <div id="app">
        <btn-a></btn-a>
        <btn-b></btn-b>
    </div> 

    <!-- 引入vue框架 开发版 :包含警告 和调试信息 -->
    <script src="../lib/vue.js"></script>
    <script>
        // bus 集成总线 (通信总线)
        //Vue中有提供一种事件系统, 只要是同一个vue实例就可以进行相互通信(将Vue实例当作是一个通信介质进行通信)
        Vue.prototype.$bus = new Vue(); 

          Vue.component('btn-a' , {
            template:`<button @click="add">A按钮 - {{count}}</button>`,
            data(){
                return {
                    count:0
                }
            },
            mounted(){
                /**
                    $on()  监听事件
                    $once() 监听一次事件
                    $off()  移除事件监听
                    $emit()  发射 触发事件
                */
                //1.监听事件  
                this.$bus.$on('abc' , (e)=>{
                    this.count = e;
                    console.log('已经监听到bus中的abc事件:',e);
                })
            },
            methods:{
                add(){
                //    console.log(this);
                this.count++;
                   //2.触发事件
                   this.$bus.$emit('abc2' , this.count);
                }
            }
        })

        Vue.component('btn-b' , {
            template:`<button @click="add">B按钮 - {{count}}</button>`,
            data(){
                return {
                    count:0
                }
            },
            mounted(){
                // 1.监听事件  
                this.$bus.$on('abc2' , (e)=>{
                    this.count = e;
                    console.log('已经监听到bus中的abc2事件:',e);
                })
            },
            methods:{
                add(){
                   console.log(this);
                   this.count++;
                   //2.向通信总线的管道中大喊一声 (触发自定义事件)
                   this.$bus.$emit('abc' , this.count );
                }
            }
        })

        //vm 就是根组件
        let vm = new Vue({
            el:"#app",//指定Vue挂载的DOM
            data:{//当前vue实例中使用的数据

            },
            methods:{//当前Vue实例中使用到的方法

            }
        })
    </script>
</body>
</html>